﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Sekretar.Repository;

namespace Sekretar
{
    public partial class ZaposleniRecView : Common.Forms.RecView
    {
        int id;

        RUgovor rUgovor = new RUgovor();
        RZaposleni rZaposleni = new RZaposleni();
        RMesto rMesto = new RMesto();
        RNacionalnost rNacionalnost = new RNacionalnost();
        RObrazovanje rObrazovanje = new RObrazovanje();

        #region Refresh
        private void RefreshZaposleni()
        {
            rZaposleni = new RZaposleni();

            int index1 = gridView1.TopRowIndex;
            int focusedRow1 = gridView1.FocusedRowHandle;
            int index2 = gridView2.TopRowIndex;
            int focusedRow2 = gridView2.FocusedRowHandle;
            int index3 = gridView3.TopRowIndex;
            int focusedRow3 = gridView3.FocusedRowHandle;
            int index4 = gridView4.TopRowIndex;
            int focusedRow4 = gridView4.FocusedRowHandle;
            rZaposleni = new RZaposleni();
            bsMaster.DataSource = rZaposleni.Izmeni(this.id);
            gridView1.FocusedRowHandle = focusedRow1;
            gridView1.TopRowIndex = index1;
            gridView2.FocusedRowHandle = focusedRow2;
            gridView2.TopRowIndex = index2;
            gridView3.FocusedRowHandle = focusedRow3;
            gridView3.TopRowIndex = index3;
            gridView4.FocusedRowHandle = focusedRow4;
            gridView4.TopRowIndex = index4;

            if (((Sekretar.DataLayer.Zaposleni)bsMaster.Current).Godisnjis.Count == 0)
            {
                btnNovPeriod.Enabled = false;
                btnIzmeniPeriod.Enabled = false;
                btnBrisiPeriod.Enabled = false;
            }
            else
            {
                btnNovPeriod.Enabled = true;
                btnIzmeniPeriod.Enabled = true;
                btnBrisiPeriod.Enabled = true;
            }
        }
        #endregion

        public ZaposleniRecView(int id)
        {
            InitializeComponent();
            this.id = id;
        }

        private void ZaposleniRecView_Load(object sender, EventArgs e)
        {
            bsMesto.DataSource = rMesto.VratiSveAktivne();
            bsNacionalnost.DataSource = rNacionalnost.VratiSve();

            if (id == 0)
            {
                bsMaster.DataSource = rZaposleni.Nov();
                xtraTabControl1.Enabled = false;
            }
            else
                RefreshZaposleni(); 
                //bsMaster.DataSource = rZaposleni.Izmeni(this.id);
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                bsMaster.EndEdit();
                this.Index = rZaposleni.Snimi((DataLayer.Zaposleni)bsMaster.Current);
            }
            catch (Exception ex)
            {
                Common.Tools.MessageError.Show(ex.Message);
                this.DialogResult = DialogResult.None;
            }

        }

        private void btnNovUgovor_Click(object sender, EventArgs e)
        {
            UgovorRecView f = new UgovorRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, 0);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnIzmeniUgovor_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            UgovorRecView f = new UgovorRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, ((DataLayer.Ugovor)bsUgovor.Current).UgovorId);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnBrisiUgovor_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            if (Common.Tools.MessageQuestion.Show("Da li želite da obrišete slog?") == DialogResult.Yes)
            {
                try
                {
                    rUgovor.Brisi(((DataLayer.Ugovor)bsUgovor.Current).UgovorId);
                    RefreshZaposleni();
                }
                catch (Exception ex)
                {
                    Common.Tools.MessageError.Show(ex.Message);
                }
            }
        }

        private void btnNovRadnaNedelja_Click(object sender, EventArgs e)
        {
            RadnaNedeljaRecView f = new RadnaNedeljaRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, 0);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnIzmenaRadnaNedelja_Click(object sender, EventArgs e)
        {
            if (gridView2.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            RadnaNedeljaRecView f = new RadnaNedeljaRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, ((DataLayer.RadnaNedelja)bsRadnaNedelja.Current).RadnaNedeljaId);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnNovGodisnjiOdmor_Click(object sender, EventArgs e)
        {
            GodisnjiRecView f = new GodisnjiRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, 0);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnIzmenaGodisnjiOdmor_Click(object sender, EventArgs e)
        {
            GodisnjiRecView f = new GodisnjiRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, ((DataLayer.Godisnji)bsGodisnji.Current).GodisnjiId);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnStampajRadnaNedelja_Click(object sender, EventArgs e)
        {
            try
            {
                Common.Tools.Sablon c = new Common.Tools.Sablon();
                c.Kreiraj(6, ((DataLayer.RadnaNedelja)bsRadnaNedelja.Current).RadnaNedeljaId);

                RefreshZaposleni();
            }
            catch (Exception ex)
            {
                Common.Tools.MessageError.Show(ex.Message);
            }
        }

        private void btnStampajUgovor_Click(object sender, EventArgs e)
        {
            try
            {
                Common.Tools.Sablon c = new Common.Tools.Sablon();

                if (((DataLayer.Ugovor)bsUgovor.Current).NeodredjenoVreme) 
                    c.Kreiraj(2, ((DataLayer.Ugovor)bsUgovor.Current).UgovorId);
                else
                    c.Kreiraj(3, ((DataLayer.Ugovor)bsUgovor.Current).UgovorId);
                
                RefreshZaposleni();

            }
            catch (Exception ex)
            {
                Common.Tools.MessageError.Show(ex.Message);
            }

        }

        private void btnStampajOtkaz_Click(object sender, EventArgs e)
        {
            try
            {
                Common.Tools.Sablon c = new Common.Tools.Sablon();
                c.Kreiraj(4, ((DataLayer.Ugovor)bsUgovor.Current).UgovorId);

                RefreshZaposleni();
            }
            catch (Exception ex)
            {
                Common.Tools.MessageError.Show(ex.Message);
            }
        }

        private void btnNovPeriod_Click(object sender, EventArgs e)
        {
            GodisnjiPeriodRecView f = new GodisnjiPeriodRecView(((DataLayer.Godisnji)bsGodisnji.Current).GodisnjiId, 0);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni();
        }

        private void btnIzmeniPeriod_Click(object sender, EventArgs e)
        {
            if (gridView4.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            GodisnjiPeriodRecView f = new GodisnjiPeriodRecView(((DataLayer.Godisnji)bsGodisnji.Current).GodisnjiId, ((DataLayer.GodisnjiPeriod)bsGodisnjiPeriod.Current).GodisnjiPeriodId);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni();
        }

        private void btnBrisiGodisnjiOdmor_Click(object sender, EventArgs e)
        {
            if (gridView4.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            if (Common.Tools.MessageQuestion.Show("Da li želite da obrišete slog?") == DialogResult.Yes)
            {
                try
                {
                    RGodisnji rGodisnji = new RGodisnji();
                    rGodisnji.Brisi(((DataLayer.Godisnji)bsGodisnji.Current).GodisnjiId);
                    RefreshZaposleni();
                }
                catch (Exception ex)
                {
                    Common.Tools.MessageError.Show(ex.Message);
                }
            }

        }

        private void btnBrisiRadnaNedelja_Click(object sender, EventArgs e)
        {
            if (gridView2.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            if (Common.Tools.MessageQuestion.Show("Da li želite da obrišete slog?") == DialogResult.Yes)
            {
                try
                {
                    RRadnaNedelja rRadnaNedelja = new RRadnaNedelja();
                    rRadnaNedelja.Brisi(((DataLayer.RadnaNedelja)bsRadnaNedelja.Current).RadnaNedeljaId);
                    RefreshZaposleni();
                }
                catch (Exception ex)
                {
                    Common.Tools.MessageError.Show(ex.Message);
                }
            }

        }

        private void btnBrisiPeriod_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            if (Common.Tools.MessageQuestion.Show("Da li želite da obrišete slog?") == DialogResult.Yes)
            {
                try
                {
                    RGodisnjiPeriod rGodisnjiPeriod = new RGodisnjiPeriod();
                    rGodisnjiPeriod.Brisi(((DataLayer.GodisnjiPeriod)bsGodisnjiPeriod.Current).GodisnjiPeriodId);
                    RefreshZaposleni();
                }
                catch (Exception ex)
                {
                    Common.Tools.MessageError.Show(ex.Message);
                }
            }

        }

        private void btnPregled_Click(object sender, EventArgs e)
        {
            if (gridView6.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaIzmenu();
                return;
            }

            DelovodnaKnjiga.DokumentRecView f = new DelovodnaKnjiga.DokumentRecView(((Sekretar.DataLayer.Dokument)bsDokument.Current).DokumentId, 0);
            f.ShowDialog();
        }

        private void btnStampajGodisnjiOdmor_Click(object sender, EventArgs e)
        {
            try
            {
                Common.Tools.Sablon c = new Common.Tools.Sablon();
                c.Kreiraj(5, ((DataLayer.Godisnji)bsGodisnji.Current).GodisnjiId);

                RefreshZaposleni();
            }
            catch (Exception ex)
            {
                Common.Tools.MessageError.Show(ex.Message);
            }
        }

        private void btnNovObrazovanje_Click(object sender, EventArgs e)
        {
            ObrazovanjeRecView f = new ObrazovanjeRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, 0);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnIzmenaObrazovanje_Click(object sender, EventArgs e)
        {
            if (gridView7.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            ObrazovanjeRecView f = new ObrazovanjeRecView(((DataLayer.Zaposleni)bsMaster.Current).ZaposleniId, ((DataLayer.Obrazovanje)bsObrazovanje.Current).ObrazovanjeId);
            if (f.ShowDialog() == DialogResult.OK)
                RefreshZaposleni(); 
        }

        private void btnBrisiObrazovanje_Click(object sender, EventArgs e)
        {
            if (gridView7.RowCount == 0)
            {
                Common.Tools.MessageError.ShowNePostojiSlogZaBrisanje();
                return;
            }

            if (Common.Tools.MessageQuestion.Show("Da li želite da obrišete slog?") == DialogResult.Yes)
            {
                try
                {
                    rObrazovanje.Brisi(((DataLayer.Obrazovanje)bsObrazovanje.Current).ObrazovanjeId);
                    RefreshZaposleni();
                }
                catch (Exception ex)
                {
                    Common.Tools.MessageError.Show(ex.Message);
                }
            }
        }
    }
}
